common_audio_sources = [
  'audio_converter.cc',
  'audio_util.cc',
  'channel_buffer.cc',
  'fir_filter_c.cc',
  'fir_filter_factory.cc',
  'real_fourier.cc',
  'real_fourier_ooura.cc',
  'resampler/push_resampler.cc',
  'resampler/push_sinc_resampler.cc',
  'resampler/resampler.cc',
  'resampler/sinc_resampler.cc',
  'resampler/sinusoidal_linear_chirp_source.cc',
  'ring_buffer.c',
  'signal_processing/auto_correlation.c',
  'signal_processing/auto_corr_to_refl_coef.c',
  'signal_processing/complex_bit_reverse.c',
  'signal_processing/complex_fft.c',
  'signal_processing/copy_set_operations.c',
  'signal_processing/cross_correlation.c',
  'signal_processing/division_operations.c',
  'signal_processing/dot_product_with_scale.cc',
  'signal_processing/downsample_fast.c',
  'signal_processing/filter_ar.c',
  'signal_processing/filter_ar_fast_q12.c',
  'signal_processing/energy.c',
  'signal_processing/filter_ma_fast_q12.c',
  'signal_processing/get_hanning_window.c',
  'signal_processing/get_scaling_square.c',
  'signal_processing/ilbc_specific_functions.c',
  'signal_processing/levinson_durbin.c',
  'signal_processing/lpc_to_refl_coef.c',
  'signal_processing/min_max_operations.c',
  'signal_processing/randomization_functions.c',
  'signal_processing/real_fft.c',
  'signal_processing/refl_coef_to_lpc.c',
  'signal_processing/resample_48khz.c',
  'signal_processing/resample_by_2.c',
  'signal_processing/resample_by_2_internal.c',
  'signal_processing/resample.c',
  'signal_processing/resample_fractional.c',
  'signal_processing/spl_init.c',
  'signal_processing/spl_inl.c',
  'signal_processing/splitting_filter.c',
  'signal_processing/spl_sqrt.c',
  'signal_processing/sqrt_of_one_minus_x_squared.c',
  'signal_processing/vector_scaling_operations.c',
  'smoothing_filter.cc',
  'third_party/ooura/fft_size_128/ooura_fft.cc',
  'third_party/ooura/fft_size_256/fft4g.cc',
  'third_party/spl_sqrt_floor/spl_sqrt_floor.c',
  'vad/vad.cc',
  'vad/vad_core.c',
  'vad/vad_filterbank.c',
  'vad/vad_gmm.c',
  'vad/vad_sp.c',
  'vad/webrtc_vad.c',
  'wav_file.cc',
  'wav_header.cc',
  'window_generator.cc',
]

arch_libs = []
if have_x86
  arch_libs += [
    static_library('common_audio_sse2',
      [
        'fir_filter_sse.cc',
        'resampler/sinc_resampler_sse.cc',
        'third_party/ooura/fft_size_128/ooura_fft_sse2.cc',
      ],
      dependencies: common_deps,
      include_directories: webrtc_inc,
      c_args: common_cflags + ['-msse2'],
      cpp_args: common_cxxflags + ['-msse2']
    )
  ]
  arch_libs += [
    static_library('common_audio_avx',
      [
        'fir_filter_avx2.cc',
        'resampler/sinc_resampler_avx2.cc',
      ],
      dependencies: common_deps,
      include_directories: webrtc_inc,
      c_args: common_cflags + ['-mavx2', '-mfma'],
      cpp_args: common_cxxflags + ['-mavx2', '-mfma']
    )
  ]
endif

if have_mips
  common_audio_sources += [
    'signal_processing/complex_bit_reverse_mips.c',
    'signal_processing/complex_fft_mips.c',
    'signal_processing/cross_correlation_mips.c',
    'signal_processing/downsample_fast_mips.c',
    'signal_processing/filter_ar_fast_q12_mips.c',
    'signal_processing/min_max_operations_mips.c',
    'signal_processing/resample_by_2_mips.c',
    'signal_processing/vector_scaling_operations_mips.c',
    'third_party/ooura/fft_size_128/ooura_fft_mips.c',
    'third_party/spl_sqrt_floor/spl_sqrt_floor_mips.c',
  ]
endif

if have_arm
  common_audio_sources += [
    'signal_processing/complex_bit_reverse_arm.S',
    'third_party/spl_sqrt_floor/spl_sqrt_floor_arm.S',
  ]
endif

if have_armv7
  common_audio_sources += [
    'signal_processing/filter_ar_fast_q12_armv7.S',
  ]
endif

if have_neon
  common_audio_sources += [
    'fir_filter_neon.cc',
    'resampler/sinc_resampler_neon.cc',
    'signal_processing/cross_correlation_neon.c',
    'signal_processing/downsample_fast_neon.c',
    'signal_processing/min_max_operations_neon.c',
    'third_party/ooura/fft_size_128/ooura_fft_neon.cc',
  ]
endif

if not have_arm
  common_audio_sources += [
    'signal_processing/complex_bit_reverse.c',
    'signal_processing/filter_ar_fast_q12.c',
  ]
endif

libcommon_audio = static_library('common_audio',
    common_audio_sources,
    dependencies: common_deps,
    include_directories: webrtc_inc,
    c_args: common_cflags,
    cpp_args: common_cxxflags
)

common_audio_dep = declare_dependency(
  link_with: [libcommon_audio] + arch_libs,
)
